﻿using System;
using System.Collections.Generic;
using BussinessLogicTecnoPez.Produccion.Enfermedades_y_control_de_estanques;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
using BussinessLogicTecnoPez;

namespace BussinessLogicTecnoPez.Seguridad_Tecnopez
{
    [Serializable]
    [DBTable("USUARIOS")]
    public class Usuario : EntityBase<Usuario>
    {
        private Int32 _idUsuario;
        private Empleado _objEmpleado;
        private string _nombre;
        private string _contrasenia;
        private Rol _objRol;
        private string _baja;

        [DBField("IDUSUARIO",true,true)]
        [FriendlyName("Código",true)]
        public Int32 IdUsuario
        {
            get { return _idUsuario; }
            set { _idUsuario = value; }
        }

        [NotNullValidator(MessageTemplate = "Empleado: Debe tener algun valor.")]
        [DBField("IDEMPLEADO",false,false,true,"IDEMPLEADO")]
        [FriendlyName("Empleado",true)]
        public Empleado Empleado
        {
            get { return _objEmpleado; }
            set { _objEmpleado = value; }
        }

        [NotNullValidator(MessageTemplate = "Nombre: Debe tener algun valor.")]
        [StringLengthValidator(0, 200, MessageTemplate = "Nombre: Tamaño máximo es de 2000 carateres.")]
        [TecnoPezNoEmptyStringValidator("Nombre: Debe tener algun valor.")]
        [DBField("NOMBREUSUARIO",false,false)]
        [FriendlyName("Nombre",true,true, FriendlyName.FilterType.String)]
        public string Nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }

        [StringLengthValidator(5, 20, MessageTemplate = "Contraseña: Debe contener entre 5 y 20 caracteres.")]
        [TecnoPezNoEmptyStringValidator("Contraseña: Debe tener algun valor.")]
        [DBField("CONTRASENA",false,false)]
        [FriendlyName("Contraseña",false)]
        public string Contrasenia
        {
            get { return _contrasenia; }
            set { _contrasenia = value; }
        }

        [NotNullValidator(MessageTemplate = "Rol: Debe tener algun valor.")]
        [DBField("IDROL",false,false,true,"IDROL")]
        [FriendlyName("Rol",true,true, FriendlyName.FilterType.String)]
        public Rol Rol
        {
            get { return _objRol; }
            set { _objRol = value; }
        }

        [DBField("BAJA",false,false)]
        [FriendlyName("Baja",true)]
        public string Baja
        {
            get { return _baja; }
            set { _baja = value; }
        }

        public override string ToString()
        {
            return this.Nombre;
        }
    }
}
